Several leading technology organizations are investing in building technologies that sell “software-as-a-service”. Such services provide access to shared storage (e.g., database systems or storage systems that provide archival storage) and/or computing resources to clients, or subscribers. Within multi-tier e-commerce systems, different resources may be allocated to subscribers and/or their applications from whole machines, to CPU, to memory, to network bandwidth, and to I/O capacity.
Some services that are exposed to clients or subscribers call other services that are internal to the service provider. Often, this is unknown to the clients or subscribers, and features of the underlying services are not exposed to the clients or subscribers. When services encapsulate other services on behalf of a client, this can be restricting and can lead to a complexity explosion in the encapsulating service. For example, in systems in which features of an underlying service are exposed to clients or subscribers of an external (client-facing) service, any modification to the application programming interface (API) of the underlying service typically requires a corresponding modification to any and all external (client-facing) services that are configured to call the underlying service and their APIs.
While the technology described herein is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the disclosure to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present disclosure as defined by the appended claims.